<?php
class Admin_BookController extends Zend_Controller_Action
{
    public function init()
    {}

    public function indexAction()
    {
        $this->_helper->layout()->setLayout('layout_admin');
        $book=new Admin_Model_MBook();
        $function=new Default_Model_MFunction();

        $request=$this->getRequest();
       
        $work=$request->getParam('work','addnew'); // tham số truyền chuyển từ trang xem sách tới
        if($work=='addnew') // được gọi từ trang hiện tại hay vào chức năng thêm sách
        {
            $current_action=$request->getParam('current_action','addnew');
            $idBook=$request->getParam('idBook',0);
            if($current_action=='addnew')   // thực hiện thêm sách
            {
                $isChange=$request->getParam('isChange','0');
                if($isChange=='0') // không nhập thông tin sách để thêm hoặc vào chức năng thêm sách
                {
                    $this->view->warning= ' Hãy nhập đúng và đầy đủ thông tin!<br/>';
                    $this->view->authors=$book->getAuthors(array("_id","name"));
                    $this->view->cats=$book->getAllCategories(array("_id","name"));
                    $this->view->idAuthorSelect='0';
                    $this->view->idCatSelect='0';

                    $this->view->current_action='addnew';
                    $this->view->idBook='0';
                    $this->view->isChange='0';
                }
                else    // thông tin về sách đã được nhập
                {
                    $nameBook=$request->getParam('nameBook', '');   // bắt buộc

                    $idAuthor=$request->getParam('listAuthor','0'); // bắt buộc
                    $nameNewAuthor=$request->getParam('txtAuthor','');

                    $idCat=$request->getParam('listCategory','0');  // bắt buộc

                    $isNewBook=$request->getParam('chNewBook','');
                    $isBestSeller=$request->getParam('chBestSeller','');

                    $publisher=$request->getParam('txtPublisher',''); // bắt buộc
                    $datePublish=$request->getParam('txtYearPublisher','');// bắt buộc
                    try
                    {
                        $datePublish=(int)$datePublish;
                    }
                    catch(Exception $e)
                    {
                        $datePublish=0;
                    }
                    $cost=$request->getParam('txtCost','');             // bắt buộc
                    try
                    {
                        $cost=(int)$cost;
                    }
                    catch(Exception $e)
                    {
                        $cost=0;
                    }

                    $saleOff=$request->getParam('txtSaleOff',0);
                    try
                    {
                        $saleOff=(int)$saleOff;
                    }
                    catch(Exception $e)
                    {
                        $saleOff=0;
                    }
                    $quote=$request->getParam('quoteContent','');

                    $intro=$request->getParam('introContent', '');  // bắt buộc

                    $dateAdd=$request->getParam('txtDateAdd','');   // bắt buộc
                    $arrDateAdd=explode("/",$dateAdd);

                    // kiểm tra sự đúng đắn của dữ liệu
                    if($nameBook=='' || ($idAuthor=='0' && $nameNewAuthor=='')
                       || $idCat=='0' || $publisher==''
                       || $intro=='' || $dateAdd=='' ||
                       !is_uploaded_file($_FILES['file_upload']['tmp_name'])
                       || $cost<=0 || $saleOff <0 || $saleOff > 100 ||
                       count($arrDateAdd)!=3 ||
                       !checkdate($arrDateAdd[1], $arrDateAdd[0], $arrDateAdd[2])||
                        $datePublish<=0)
                    {
                        $this->view->warning= ' Hãy nhập đúng và đầy đủ thông tin!<br/>';
                        $this->view->nameBook=$nameBook;
                        $this->view->authors=$book->getAuthors(array("_id","name"));
                        $this->view->cats=$book->getAllCategories(array("_id","name"));
                        $this->view->idAuthorSelect=$idAuthor;

                        $this->view->isNewBook=$isNewBook;
                        $this->view->isBestSeller=$isBestSeller;

                        $this->view->nameNewAuthor=$nameNewAuthor;
                        $this->view->idCatSelect=$idCat;
                        $this->view->publisher=$publisher;
                        $this->view->datePublish=$datePublish;
                        $this->view->cost=$cost;
                        $this->view->saleOff=$saleOff;
                        $this->view->quote=$quote;
                        $this->view->intro=$intro;
                        $this->view->dateAdd=$dateAdd;

                        $this->view->current_action='addnew';
                        $this->view->idBook='0';
                        $this->view->isChange=$isChange;
                        return;
                    }
                    else // ghi dữ liệu vào csdl
                    {

                        $checkTotal=true;
                        $warning='';

                        // upload file
                        $pathImage='';
                        if(is_uploaded_file($_FILES['file_upload']['tmp_name']) && $_FILES['file_upload']['error'] >0) // kiểm tra có file upload và ko có lỗi gì
                        {
                            $warning = $warning .  'Lỗi upload file. Hãy thử lại!<br/>';
                            $checkTotal=FALSE;
                        }
                        else if($checkTotal && is_uploaded_file($_FILES['file_upload']['tmp_name']))
                        {
                            // kiểm tra file type
                            $fileType=array("image/gif","image/jpeg","image/pjpeg","image/x-png");
                            $ok=false;
                            for($i=0;$i<count($fileType);$i++)
                            {
                                if($fileType[$i]==$_FILES['file_upload']['type'])
                                {
                                    $ok=true;
                                }
                            }
                            if($checkTotal && !$ok)
                            {
                                $warning= $warning . "Định dạng file ảnh không hợp lệ!<br/>";
                                $checkTotal=FALSE;
                            }

                            // kiểm tra dung lượng file
                            if($checkTotal && $_FILES['file_upload']['size'] > $request->getParam('MAX_FILE_SIZE'))
                            {
                                $warning= $warning . "Không cho phép upload file có dung lượng lớn hơn 5 Mb!<br/>";
                                $checkTotal=FALSE;
                            }

                            $date=getdate();
                            $dir= 'images'.'/'.$date['year'].'/'.$date['month'].'/'.$date['mday'];
                            $file=$dir .'/'.basename($_FILES['file_upload']['name']);
                            
                            // kiểm tra xem file tồn tại hay chưa
                            if($checkTotal && is_file($file))
                            {
                                $warning= $warning . "File ảnh đã tồn tại<br/>";
                            }

                            // kiểm tra xem thư mục tồn tại chưa
                            if($checkTotal && !is_dir($dir))
                                mkdir($dir, 0777, true);

                            // upload file
                            if($checkTotal && move_uploaded_file($_FILES['file_upload']['tmp_name'], $file))
                                $pathImage=  Zend_Controller_Front::getInstance ()->getBaseUrl () .'/'. $file;
                            else
                            {
                                $warning= $warning . "Upload ảnh có lỗi!<br/>";
                            }     
                        }

                        if($checkTotal)
                        {
                            if($idAuthor=='0')
                            {
                                $idAuthor=$book->addAuthor($nameNewAuthor);
                            }

                            $id1=new MongoId($idAuthor);
                            $id2=new MongoId($idCat);
                            $arr1=array('year'=>$arrDateAdd[2],'month'=>$arrDateAdd[1],'day'=>$arrDateAdd[0]);
                            $date1=new Zend_Date($arr1);
                            $date1=$function->dateToString($date1);

                            $query=array("image"=>$pathImage,"id_author"=>$id1,"id_category"=>$id2,
                                "name"=>$nameBook,"quote"=>$quote,"date_publish"=>$datePublish,"date_added"=>$date1,
                                "publisher"=>$publisher,"information"=>$intro,"cost"=>$cost,"saleoff"=>$saleOff);

                            // thêm sách vào kho
                            $idNewBook=$book->addBook($query,'book');
                           
                            if( is_int($idNewBook) && $idNewBook==-1)   // ko thêm sách thành công
                            {
                                $checkTotal=FALSE;
                                $warning=$warning.' Cuốn sách này đã có trong kho!<br/>';

                                $date=getdate();
                                $dir= 'images'.'/'.$date['year'].'/'.$date['month'].'/'.$date['mday'];
                                $file=$dir .'/'.basename($_FILES['file_upload']['name']);
                                unlink($file);
                            }
                            else
                            {
                                $id=new MongoId($idNewBook);
                                // thêm sách mới
                                if($isNewBook=='on')
                                {
                                    $book->addBook(array("id_book"=>$id,"date"=>$date1),'newbook');
                                }
                                // thêm sách nổi tiếng
                                if($isBestSeller=='on')
                                {
                                    $book->addBook(array("id_book"=>$id,"date"=>$date1),'bestseller');
                                }

                                // thêm vào sách được mua nhiều nhất với số lần mua là 0
                                // thêm vào sách được nhiều người quan tâm nhất, khởi tạo 0 các giá trị thống kê

                                if($book->getNumberBook('mostbought')<30)
                                    $book->addBook(array("id_book"=>$id,"quality"=>0), 'mostbought');
                                $book->addBook(array("id_book"=>$id,"sumcomment"=>0,"sumlike"=>0,"sumrating"=>0,"view"=>0,"sellnumber"=>0,"totalmark"=>0), 'bookinterest');

                                $this->view->warning="Một cuốn sách đã được thêm thành công!";


                                // Khởi tạo lại cho lần thêm sách tiếp theo
                                $this->view->authors=$book->getAuthors(array("_id","name"));
                                $this->view->cats=$book->getAllCategories(array("_id","name"));
                                $this->view->idAuthorSelect='0';
                                $this->view->idCatSelect='0';

                                $this->view->current_action='addnew';
                                $this->view->idBook='0';
                                $this->view->isChange='0';
                            }
                            
                        }
                        if(!$checkTotal)
                        {
                            $this->view->warning = $warning;

                            $this->view->nameBook=$nameBook;
                            $this->view->authors=$book->getAuthors(array("_id","name"));
                            $this->view->cats=$book->getAllCategories(array("_id","name"));
                            $this->view->idAuthorSelect=$idAuthor;

                            $this->view->isNewBook=$isNewBook;
                            $this->view->isBestSeller=$isBestSeller;

                            $this->view->nameNewAuthor=$nameNewAuthor;
                            $this->view->idCatSelect=$idCat;
                            $this->view->publisher=$publisher;
                            $this->view->datePublish=$datePublish;
                            $this->view->cost=$cost;
                            $this->view->saleOff=$saleOff;
                            $this->view->quote=$quote;
                            $this->view->intro=$intro;
                            $this->view->dateAdd=$dateAdd;

                            $this->view->current_action='addnew';
                            $this->view->idBook='0';
                            $this->view->isChange=$isChange;
                        
                        }
                    }
                }
            }
            else if($current_action=='edit')    // thực hiện sửa thông tin sách đã nhập từ trước
            {
                
            }
        }
        else    // được chuyển từ trang xem chi tiết tới để sửa sách
        {
            
        }
    }

    public function listbookAction()
    {
        $this->_helper->layout()->setLayout('layout_admin');
        $book=new Admin_Model_MBook();

        $this->view->books=$book->getBooks('book', $id=0);
    }

    public function createindexAction()
    {
        $this->_helper->layout()->setLayout('layout_admin');
        $this->_helper->viewRenderer->setNoRender();
        //$this->getResponse()->appendBody('Đang tạo index dữ liệu phục vụ tìm kiếm ..... <br/> Vui lòng chờ !');

        
        $book=new Admin_Model_MBook();
        $bookSearch=$book->getAllBookForSearch();

        // Zend_Lucene
        $pathLucene="../public/lucene-data";
        
        /*setlocale(LC_ALL, 'vie');*/
        Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_TextNum_CaseInsensitive());
        
        //setlocale(LC_CTYPE, 'vi_VI.iso-8859-1');
        Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8());

        //setlocale(LC_ALL, 'vi');
        //setlocale(LC_CTYPE, 'vi_VI.iso-8859-1');


        $index= new Zend_Search_Lucene($pathLucene, true);  //Zend_Search_Lucene::create($pathLucene);
        foreach($bookSearch as $aBook)
        {   
            //echo '<br/>'.$aBook["name"].'<br/>';
            $doc=new Zend_Search_Lucene_Document();
            $doc->addField(Zend_Search_Lucene_Field::unIndexed('_id', $aBook["_id"]));
            $doc->addField(Zend_Search_Lucene_Field::keyword('id_category', $aBook["id_category"]));
            $doc->addField(Zend_Search_Lucene_Field::unIndexed('id_author', $aBook["id_author"]));
            $doc->addField(Zend_Search_Lucene_Field::text('name',  strtolower($aBook["name"])),'utf-8');
            $doc->addField(Zend_Search_Lucene_Field::text('authorname', $aBook["authorname"],'utf-8'));

            $index->addDocument($doc);
            //echo '<br/>'.$aBook["name"].'<br/>';
            echo '_id:'. $aBook["_id"].'<br/>';
            echo 'id_author:'. $aBook["id_author"].'<br/>';
            echo 'id_category:'. $aBook["id_category"].'<br/>';
            echo 'name:'. $aBook["name"].'<br/>';
            echo 'nameauthor:'. $aBook["authorname"].'<br/><br/>';
        }
        $index->commit();
        //$index->optimize();

        $this->getResponse()->clearBody();
        //$this->getResponse()->appendBody('Tạo chỉ mục hoàn tất !');
        //echo 'total documents:'.$index->maxDoc();
        $this->view->bookSearch=$bookSearch;
    }
}
?>
